The use of computer systems and computer-related technologies continues to increase at a rapid pace. This increased use of computer systems has influenced the advances made to computer-related technologies. Indeed, computer systems have increasingly become an integral part of the business world and the activities of individual consumers. Computer systems may be used to carry out several business, industry, and academic endeavors. The wide-spread use of computers has been accelerated by the increased use of computer networks, including the Internet.
Many businesses use one or more computer networks to communicate and share data between the various computers connected to the networks. The productivity and efficiency of employees often require human and computer interaction. Users of computer technologies continue to demand that the efficiency of these technologies increase. Improving the efficiency of computer technologies is important to anyone who uses and relies on computers.
Improvements to the efficiency of computing technologies has introduced the concept of virtual machines. The concept of virtual machines allows the sharing of the underlying physical machine resources between different virtual machines, each virtual machine running its own operating system. A software layer providing the virtualization is often referred to as a virtual machine monitor or a hypervisor. Virtual machines allow for multiple operating system environments to co-exist on the same computing device. These multiple operating system environments are often in strong isolation from each other. In addition, virtual machines may provide an instruction set architecture (ISA) that may be different from that of the real physical machine.
Virtual machines, however, may be less efficient than a real physical machine when they access the underlying hardware indirectly. Further, when multiple virtual machines are concurrently running on the same physical machine, each virtual machine may exhibit a varying and unstable performance. For example, applications running on multiple virtual machines may be associated with identical memory pages stored in the memory of the real physical machine. The efficiencies of the virtual machines (and the real physical machine) may decline because of the inefficient allocation of the memory. As a result, benefits may be realized by providing improved systems and methods for identifying candidate duplicate memory pages in a virtual environment.